APIFlask 初始化專案 - Part2


Posted by monoserve174 on 2024-03-08

在前篇的小專案中,已經介紹了如何使用 APIFlask 完成以不同的附帶參數方式取得或是新增資料,本章節內容將繼續把專案完成修改與刪除的邏輯處理。

實作小程式 - 3

此部分實作將銜接原實作小程式繼續進行

第五部分: 修改指定飯店資訊

先前在第三部分,已經使用 URL Path Param 方式完成利用飯店 id 取得指定飯店資訊,這部分將使用相同的做法完成修改指定飯店資訊。
功能簡述: 使用 URL Path Param 搭配 Request Body Param ,在網址指定飯店 id 取得資料,再使用 Body 資料修改原飯店資料,這部分較大的差異

# Python
# <project dir>/app.py
...

class HotelUpdateInSchema(Schema):
    name = String(description='飯店名稱', required=False)
    address = String(description='飯店地址', required=False)
    price = Integer(description='飯店價格', required=False)


@app.put('/apis/hotels/<int:hotel_id>')
@app.input(HotelUpdateInSchema(partial=True), location='json')
def update_hotel(hotel_id, **kwargs):
    """
    更新飯店資料
    下列有使用到 Python 語言特性, hotel 資料仍與原始資料連動,
    如果不希望連動,請使用 copy.deepcopy
    """
    raw_data = kwargs.get('json_data', {})
    hotel = [hotel for hotel in hotels if hotel['id'] == hotel_id][0]

    for key, value in raw_data.items():
        if value:
            hotel[key] = value

    result = hotel
    return result

第六部分: 刪除指定飯店資訊

功能簡述: 在網址指定飯店 id 取得資料,由 hotel 列表中刪除指定飯店

# Python
# <project dir>/app.py
...

@app.delete('/apis/hotels/<int:hotel_id>')
def delete_hotel(hotel_id):
    """
    刪除飯店資料
    """
    for hotel in hotels:
        if hotel['id'] == hotel_id:
            hotels.remove(hotel)

    result = {
        'message': 'Delete Hotel Success!'
    }

    return result

在這個故事中已經成功地使用 APIFlask 與五到六個步驟,建立一個簡易的飯店資訊管理的 API。接下來,我們將進一步探討如何使用 python-dotenv 來管理專案環境。

python-dotenv 是一個非常實用的套件,它能夠讓開發者在開發和部署應用程式時,更加方便地管理環境變數。在開發過程中,經常需要根據不同的環境(例如開發環境、測試環境、生產環境等)來切換不同的設定。這時候,利用環境變數來區分這些環境,就能讓我們的程式更加靈活和易於管理。

範例專案結構

- project dir
-- app.py
-- .env
-- .flaskenv

從專案結構中加入的兩個檔案,一個是 env,另一個則是 flaskenv,

  • env: 存放隱私變數、例如 db 資訊等,通常不建議放入版控 git 上
  • flaskenv: Flask 或 APIFlask 通用環境變數

APIFlask 環境設定

# <project dir>/.flaskenv

# APIFlask 程式文件位置
FLASK_APP=app.py
# 運行環境
FLASK_ENV=development
# 除錯模式
FLASK_DEBUG=1
# 全域設定
# FLASK_RUN_HOST='0.0.0.0'
# 指定 Port
FLASK_RUN_PORT=5000

#APIFlask #API Server #Init Project







Related Posts

Sequlize & Express. P2

Sequlize & Express. P2

Office Tool Plus 設定

Office Tool Plus 設定

Day 114

Day 114


Comments